// С использованием итераторов ввода.

#include <iostream>
#include <fstream>
#include <iterator>
#include <string>
#include <vector>
#include <algorithm>

int main()
{
  const std::string filename = "filelist.ini";

  std::ifstream infile(filename.c_str()); // открытие ini-файла
  if (!infile.is_open()) {	      // если не открылся (не существует)
    std::ofstream tmpfile(filename.c_str()); // создаем этот файл
    if(!tmpfile.is_open()) {		// если не создается - значит ошибка
      std::cerr << "Cannot create ini-file.\n";
      return 1;
    }
    // Заполнение файла (добаляем заголовки секций и комментарии к ним).
    tmpfile << "[MINB]\n\n[SBERK]\n\n[SBERUS]\n\n[SBERON]\n";
    tmpfile.close();		// закрываем созданный файл
    infile.open(filename.c_str());	// открываем для чтения
    if(!infile.is_open()) {	// если и сейчас не открылся - значит ошибка
      std::cerr << "Cannot open ini-file.\n";
      return 2;
    }
  }

  std::istream_iterator<std::string> eos; // итератор - признак конца ввода
  std::istream_iterator<std::string> infileiter(infile); // итератор открытого файла
  std::vector<std::string> instrings(infileiter, eos);	 // создание вектора из строк файла

  std::copy(instrings.begin(), instrings.end(), std::ostream_iterator<std::string>(std::cout, "\n"));

  return 0;
}
  

	    

  
  
